package br.com.duosoftware.orcamento.daos;

import br.com.duosoftware.orcamento.entidades.Acao;
import br.com.duosoftware.orcamento.entidades.PeriodoDePrograma;
import br.com.duosoftware.orcamento.entidades.Programa;
import java.util.List;

/**
 *
 * @author Renato
 * 
 */
public class AcaoDAO extends DAOGenerico {

    public void salvarOuAtualizar(Acao acao) {
        salvarOuAtualizarPojo(acao);
    }

    public void excluir(Acao acao) {
        excluirPojo(acao);
    }

    public Acao getAcaoPorId(long id) {
        return getPojo(Acao.class, id);
    }

    public List<Acao> listarAcoes() {
        return getPojos("FROM Acao acao ORDER BY acao.id");
    }
    
    public Integer getMaxNumeroAcao() {
        return getPojoCriterio("SELECT MAX(CAST(acao.numeroAcao AS integer)) FROM Acao acao");
    }

    public List<Acao> listarAcoes(PeriodoDePrograma periodoDePrograma) {
        return getPojos("FROM Acao acao WHERE acao.periodoDePrograma.id = ? "
                + "ORDER BY acao.id", periodoDePrograma.getId());
    }
    
    public List<Acao> listarAcoes(Programa programa){
    
        return getPojos("FROM Acao acao WHERE acao.programa.id = ?", programa.getId());
        
    }

    public List<Acao> listarAcoes(Programa programa, PeriodoDePrograma periodoDePrograma) {
        return getPojos("FROM Acao acao WHERE acao.programa.id = ? AND"
                + " acao.periodoDePrograma.id = ? "
                + "ORDER BY acao.id", programa.getId(), periodoDePrograma.getId());
    }
    
}
